/*
 * @Author: byron
 * @Date: 2021-09-27 23:14:26
 * @LastEditTime: 2021-10-01 04:31:14
 */

import Vue from 'vue'
import ElementUI from 'element-ui'
import upperFirst from 'lodash/upperFirst'
import camelCase from 'lodash/camelCase'
import VueLazyload from 'vue-lazyload'
import loadTheme from '@/utils/theme.js'
import * as utils from '@/utils'
import { confirmObj } from '@/base/confirm.vue'

// const loadimage = require('@/assets/logo.png')
const EMPTY_IMG =
    ''
// const errorimage = require('assets/img/common/error.gif')

export default {
    install() {
        const requireComponent = require.context(
            // 其组件目录的相对路径
            '@/base',
            // 是否查询其子目录
            true,
            // 匹配基础组件文件名的正则表达式
            /[a-z0-9]+\.(vue|js)$/
        )
        requireComponent.keys().forEach((fileName) => {
            // 获取组件配置

            const componentConfig = requireComponent(fileName)

            // 获取组件的 PascalCase 命名
            const componentName = upperFirst(
                camelCase(
                    // 获取和目录深度无关的文件名
                    fileName
                        .split('/')
                        .pop()
                        .replace(/\.\w+$/, '')
                )
            )
            Vue.component(
                componentName,
                componentConfig.default || componentConfig
            )
        })
        Vue.use(ElementUI)
        Vue.use(confirmObj)
        Vue.use(VueLazyload, {
            loading: EMPTY_IMG, //图片加载状态下显示的图片
            error: EMPTY_IMG, //图片加载失败时显示的图片
        })

        // 原型链挂载
        Vue.prototype.$loadTheme = loadTheme
        Vue.prototype.$utils = utils
    },
}
